function formatMsgTime(date) {
    // 获取当前时间和目标时间的年月日时分
    const now = new Date();
    const target = new Date(date); // 确保参数为Date对象（兼容传入时间戳等情况）

    // 提取目标时间的时分（补零处理）
    const hours = String(target.getHours()).padStart(2, '0');
    const minutes = String(target.getMinutes()).padStart(2, '0');
    const timeStr = `${hours}:${minutes}`;

    // 计算目标时间与当前时间的年月日差值（忽略时分秒）
    const nowDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());
    const targetDate =
        new Date(target.getFullYear(), target.getMonth(), target.getDate());
    const diffTime = nowDate - targetDate;
    const diffDays = diffTime / (1000 * 60 * 60 * 24); // 转换为天数差

    if (diffDays === 0) {
        // 当天：只显示时分
        return timeStr;
    } else if (diffDays === 1) {
        // 昨天：显示“昨天 时分”
        return `昨天 ${timeStr}`;
    } else {
        // 其他时间：显示“月日 时分”（月份和日期补零）
        const month =
            String(target.getMonth() + 1).padStart(2, '0'); // 月份从0开始，需+1
        const day = String(target.getDate()).padStart(2, '0');
        return `${month}月${day}日 ${timeStr}`;
    }
}

// 测试当天时间
console.log(formatMsgTime(new Date())); // 输出：当前时分（如 15:42）

// 测试昨天时间（假设当前是2025-10-22）
const yesterday = new Date(2025, 9, 21, 10, 30); // 月份0=1月，4=5月
console.log(formatMsgTime(yesterday)); // 输出：昨天 10:30

// 测试其他时间（如2024-05-18）
const otherDay = new Date(2024, 4, 18, 8, 5);
console.log(formatMsgTime(otherDay)); // 输出：05月18日 08:05
